package cn.biplam.front.template.control.table.cell;

import cn.biplam.common.tools.TOOLS;
import cn.biplam.common.wrapper.ErrorMessage;
import cn.biplam.front.html.base.HtmlWindow;
import cn.biplam.front.html.base.Const.Window_Event;
import cn.biplam.front.template.base.Text;
import cn.biplam.front.template.base.Tips;

/**
 * 表格的文本单元格
 * @author XiaoRuxing 2009-6-25上午09:26:44
 * @version 1.0
 */
public class TextCell extends Cell{

	/** 文本对象 */
	private Text text;
	/** 用户文本超长时存放文本及其他对象 */
	Tips allContent=null;
	/** 文本最大宽度 */
	private int width=-1;
	/** 表格ID */
	private String tableID;
	private String ID;
	private int length;

	public TextCell(){}

	public TextCell(String sText,String tableID) throws ErrorMessage{
		this(null, sText, tableID);
	}

	public TextCell(String content, String tableID, boolean bindCell) throws ErrorMessage {
		this(null, content, null, tableID, bindCell);
	}
	
	/**
	 * 创建文本对象
	 * @param sText 文本内容
	 * @throws ErrorMessage
	 */
	public TextCell(String ID,String sText,String tableID) throws ErrorMessage{
		this(ID, sText, null, tableID);
	}

	/**
	 * 构造文本对象，设置文本内容及其CSS
	 * @param ID  属性ID
	 * @param sText   文本内容
	 * @param width   对象最大宽度
	 * @param tableID 行ID
	 * @throws ErrorMessage
	 */
	public TextCell(String ID,String sText,String width,String tableID) throws ErrorMessage{
		this(ID, sText, width, tableID, true);
	}
	
	public TextCell(String ID,String sText,String width,String tableID,
			boolean isBind) throws ErrorMessage{
		super(isBind);
		this.ID=ID;
		this.tableID=tableID;
		if(width!=null)
			this.width=(TOOLS.stringToInt(width)-24)/6;
		_init(sText);
	}



	/**
	 * 创建文本对象设置文本对象内容
	 * @param sText
	 * @throws ErrorMessage 
	 */
	private void _init(String sText) throws ErrorMessage{

		/** 文本长度 */
		int textLength=0;
		if(sText!=null){
			textLength=sText.getBytes().length;
		}else{
			textLength=0;
		}
		/** 文本占位小于指定宽度，直接显示 */
		if(width>=textLength||width==-1){
			this.text=new Text(TOOLS.stringDecoceFromDb(sText),ID);
		}else{
			/** 截取文本 */
			this.text=new Text(TOOLS.subString(TOOLS.stringDecoceFromDb(sText), width),ID);
			/** 将文本放入DIV中 */
			allContent=new Tips("…",sText,tableID);
			this.cellDiv.bind(Window_Event.OnClick, "pts(this,'"+tableID+"')");
		}

		if(allContent!=null){
			this.length = text.getPxWith()+allContent.getPxLength();
		}else{
			this.length = text.getPxWith();
		}
	}

	/**
	 * 放入多个html对象到单元格
	 * @param html html对象组
	 * @throws ErrorMessage
	 */
	public void put(HtmlWindow... html) throws ErrorMessage{
		for(HtmlWindow ht:html){
			this.put(ht);
			this.length=this.length+ht.getLength();
		}
	}

	/**
	 * 获取单元格宽度
	 * @return
	 */
	public int _getLength(){
		return this.length;
	}

	/**
	 * 返回text单元格
	 * @return
	 * @throws ErrorMessage
	 */
	public void getContent() throws ErrorMessage{
		if(text!=null){
			HtmlWindow win = text.get();
			put(win);
		}
		if(allContent!=null){
			HtmlWindow win = allContent.get();
			put(win);
		}
	}
}
